package cn.ainit.sys.menu;

import java.util.List;
import java.util.Map;

import cn.ainit.common.ReturnObject;
import cn.ainit.sys.dz.entity.SysDzSource;

public interface MenuDao {

	public List<SysFunctions> getAllMenu() throws Exception;
	
	public List<SysFunctions> getMenuById(String funcId) throws Exception;
	
	public List<SysFunctions> getListByFId(String superId) throws Exception;
	/**
	 * 加载所有对照sql
	 * @return
	 * @throws Exception
	 * @author Xuzq
	 * @date 2014-4-3 下午06:07:24
	 */
	public List<SysDzSource> getAllDzSource() throws Exception;

	/**
	 * 加载dbi的对照
	 * @return
	 * @throws Exception
	 */
	List<SysDzSource> getDzSourceByDBI(String dbi) throws Exception;

	/**
	 * 加载dbi 和 showpk的对照
	 * @param dbi		DBI
	 * @param showpk	show_pk
	 * @return			List
	 */
	List<SysDzSource> getDzSourceByDBIAndShowpk(String dbi, String showpk) throws Exception;

	/**
	 * 加载 dbi 和 not showpk 的对照
	 * @param dbi		DBI
	 * @param showpk	show_pk
	 * @return			List
	 */
	List<SysDzSource> getDzSourceByDBIAndShowpkNot(String dbi, String showpk) throws Exception;

	/**
	 * 加载 dbi 和 not showpk 的对照
	 * @param dbi		DBI
	 * @param showpk	show_pk
	 * @return			List
	 */
	List<SysDzSource> getDzSourceByDBIAndShowpkNotIn(String dbi, String showpkNotIn) throws Exception;

	/**
	 * 加载某些对照
	 * @param dsId
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-6-6 上午10:41:11
	 */
	public List<SysDzSource> getDzSourceSome(String dsId) throws Exception;
	/**
	 * 加载对照的内容
	 * @param sqlText
	 * @param showPk
	 * @param showName
	 * @return
	 * @throws Exception
	 * @author Xuzq
	 * @date 2014-4-3 下午06:07:35
	 */
	public List loadDzList(String sqlText, String showPk, String showName) throws Exception;
	/**
	 * 
	 * @param funcId
	 * @param uid 
	 * @return 
	 * @throws Exception]
	 * 根据funid 返回实体类
	 */
	public SysFunctions getFunctionById(String funcId, String uid)throws Exception;
	
	/***
	 * 根据用户找出左侧菜单权限
	 * @param userId
	 * @return
	 * @throws Exception
	 * @author Xuzq
	 * @date 2014-4-22 下午02:42:34
	 */
	public Object getLeftMenu(String userId)throws Exception;
	
	/**
	 * 获取用户加载子系统的权限
	 * @param userId
	 * @param menuId
	 * @return
	 * @throws Exception
	 * @author feifei
	 * @date: 2015-5-11 下午06:18:36 
	 */
	public Object getSubSysRight(String userId,String menuId) throws Exception;
	
	/***
	 * 将登录信息插入session
	 * @param sessionSql
	 * @return
	 * @throws Exception
	 * @author Xuzq
	 * @param sessionObj 
	 * @date 2014-4-29 上午11:11:25
	 */
	public boolean writeSession(StringBuffer sessionSql, SessionObj sessionObj)throws Exception;
	
	/***
	 * 判断用户是否存在
	 * @param sql
	 * @param name
	 * @param pass
	 * @return
	 * @throws Exception
	 * @author Xuzq
	 * @date 2014-5-15 下午05:08:55
	 */
	public SessionObj existOperator(String sql, String name,
			String pass)throws Exception;
	
	/***
	 * 得到左侧所有的菜单
	 */
	public List<Map<String,Object>> getAllMenus();
	
///////////////////////////////////////////////////////////////////////////////////////	 权限//////////
	/**
	 * 根据用户Id得到用户所属的权限组和没有的权限组
	 * @param uid
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-8-26 下午06:13:47
	 */
	public List groupByUId(String uid)throws Exception;
	 
	/**
	 * 根据组ID去查找所拥有的模块和不拥有的模块
	 * @param gid
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-8-27 上午09:17:12
	 */
	public List modualByUId(String uid) throws Exception;
	/**
	 * 得到所有的权限组
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-8-30 上午10:32:05
	 */
	public List getAllGroup() throws Exception;
	/**
	 * 得到所有的部门
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-8-30 上午10:32:05
	 */
	public List getAllDepart() throws Exception;
	/**
	 * 得到所有的datastore
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-8-29 下午05:36:02
	 */
	public List dataStoreAll() throws Exception;
	/**
	 * 根据模块的ID查找对用的dataStore
	 * (或者是根据人和模块查找这个人拥有这个模块中的DS)
	 * @param mId
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-2 上午10:01:32
	 */
	public List dsByModualList(String mId,String oid) throws Exception;
	/**
	 * 往sys_right_map中添加数据（用户组和用户的关系）
	 * @param oid
	 * @param gIds
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-2 下午03:17:14
	 */
	public String saveGroupUser(String oid,List<String> gIds,String uid) throws Exception;
	/**
	 * 往sys_right_user_modual_map中添加数据（模块和用户之间的关系）
	 * @param oid
	 * @param mids
	 * @param uid
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-2 下午06:45:29
	 */
	public String saveModualUser(String oid,String mids,String uid) throws Exception;
	/**
	 * 往SYS_RIGHT_USER_MENUS中添加数据（功能和用户之间的关系）
	 * @param mId
	 * @param oid
	 * @return
	 * @author wyy
	 * @date 2014-9-5 下午05:00:30
	 */
	public String saveDSGN(String mId,String oid,List<Map<String,String>> dsList,String uid) throws Exception;
	/**
	 * 查询改组的该模块中的所有功能
	 * @param oid
	 * @param mId
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-5 下午05:57:48
	 */
	public List<Map<String,Object>> dsByGroMo(String oid,String mId) throws Exception;
	/**
	 * 根据dsId查找DataStore中的sql 并且找组中或者用户的表中的where条件语句  
	 * 拼接之后返回
	 * @param dsId
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-10 下午04:37:31
	 */
	public ReturnObject sqlByModual(String dsId) throws Exception;
	/**
	 * 执行sql语句  返回语句是否正确执行
	 * @param sql
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-10 下午03:07:15
	 */
	public boolean executSql(String sql) ;
	/**
	 * 查找在用户和Ds表中是否存在dsId的数据，
	 * 如果有修改，如果没有插入
	 * @param dsId
	 * @param sql
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-10 下午06:28:23
	 */
	public boolean saveWhere(String dsId,String sql,String oid,String uid) throws Exception;
	/**
	 * 根据功能的ID查找对应的按钮
	 * (或者是根据人和功能查找这个人拥有这个功能中的按钮)
	 * @param mId
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-2 上午10:01:32
	 */
	public List butnByDS(String dsId,String oid) throws Exception;
	/**
	 * 加载所有的通用按钮
	 * @return
	 * @throws Exception
	 */
	public List commButn() throws Exception;
	/**
	 * 保存按钮
	 * @param mId
	 * @param oid
	 * @param dsList
	 * @param uid
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-18 上午11:40:16
	 */
	public String saveDSButn(String dsId,String oid,List<Map<String,String>> dsList,String uid) throws Exception;
	/**
	 * 根据dsId和用户找到这个组中这个功能中所有的按钮
	 * @param oid
	 * @param dsId
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-18 下午02:08:12
	 */
	public List<Map<String,Object>> butnByGroDs(String oid,String dsId) throws Exception;
	/**
	 * 根据组的Id查询组中的模块，功能，按钮
	 * @param gid
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-26 上午09:42:59
	 */
	public List mgbByGroup(String gid) throws Exception;
	/**
	 * 根据取消的组Id查询这个组和其他组交集之外的模块，功能，按钮
	 * @param qxgid
	 * @param gidList
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-26 上午11:19:48
	 */
	public List mgbByGroupQX(String qxgid,List<String> gidList) throws Exception;
	/**
	 * 根据用户Id查询出用户所在组中的功能并去除个性的拒绝的功能的集合
	 * 用户所在组中的按钮并去除个性的拒绝的功能的集合
	 * @param uid
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-9-26 下午03:39:03
	 */
	public List gbByUserId(String uid) throws Exception;
	/**
	 * 根据组Id查询这个组中所有的用户
	 * @param gId
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-10-7 下午07:54:39
	 */
	public List userByGroup(String gId) throws Exception;
	/**
	 * 根据组的Id查询这个组的具体信息
	 * @param gId
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-10-9 下午05:12:47
	 */
	public List groupById(String gId) throws Exception;
	/**
	 * 操作组（没有就保存组，有就修改组）
	 * @param gId
	 * @param gName
	 * @param gLevel
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-10-10 上午09:12:16
	 */
	public boolean execGroup(String gId,String gName,String gLevel,String oid) throws Exception;
	/**
	 * 保存角色组的权限内容
	 * 将前台传入的数据插入到缓存表中
	 * @param mList
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-10-11 下午02:34:37
	 */
	public String saveGroupPerms(String gId,PermsGroup allList,String uid) throws Exception;
	/**
	 *  调用过程，将前台传入的数据插入数据库表中
	 * @param mList
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-10-11 下午02:34:37
	 */
	public boolean execSaveGroup(String gId,String everyFlag,String uid) throws Exception;
	/**
	 * 保存用户的权限内容
	 * 将前台传入的数据插入到缓存表中
	 * @param mList
	 * @return
	 * @throws Exception
	 * @author wyy
	 * @date 2014-10-11 下午02:34:37
	 */
	public boolean saveUserPerms(String oid,PermsGroup allList,String uid) throws Exception;
	/**
	 * 权限搜索
	 * @param valStr
	 * @return
	 * @throws Exception
	 */
	public RightList findPerms(String valStr) throws Exception;
	/**
	 * 保存用户的权限内容(从搜索模块进入的)
	 * 将前台传入的数据插入到缓存表中
	 * @param oid
	 * @param allList
	 * @param uid
	 * @return
	 * @throws Exception
	 */
	public boolean saveFindUserPerms(String oid,PermsGroup allList,String uid) throws Exception;
	/**
	 * 保存角色组的权限内容(从搜索模块进入的)
	 * 将前台传入的数据插入到缓存表中
	 * @param oid
	 * @param allList
	 * @param uid
	 * @return
	 * @throws Exception
	 */
	public boolean saveFindGroupPerms(String gid,PermsGroup allList,String uid) throws Exception;
	
	
	
 //////////////////////////////////////////////导入数据/////////////////////////////////////////////////
	/**
     * @Title: querySessionInfoBySql
     * @author : FuXiangYi  
     * @Description:  根据sql语句查询session数据
     * @param sql
     * @return    
     * @return List<Map<String,Object>> 
     * @date 2014-10-27 上午11:26:59
     */
	public List<Map<String, Object>> querySessionInfoBySql(String sql);
    /**
     * 
     * @Title: saveOrUpdate
     * @author : FuXiangYi  
     * @Description: 修改和添加方法
     * @param sessionContorl
     * @return boolean 
     * @date 2014-10-27 下午03:12:45
     */
	public boolean saveOrUpdate(SysSessionContorl sessionContorl);
    /**
     * 
     * @Title: delBySql
     * @author : FuXiangYi  
     * @Description:  根据sql删除数据
     * @param sql
     * @return boolean 
     * @date 2014-10-27 下午04:44:51
     */
	public boolean delBySql(String sql);

//	/**
//	 * 根据dsid 加载对照信息
//	 * @param dsId
//	 * @return
//	 * @throws Exception
//	 */
//	public List<SysDzSource> loadDzByDsId(String dsId) throws Exception;

	
	/**
	 * 新版本
	 * 根据dsid 加载对照信息
	 * @param dsId
	 * @return
	 * @throws Exception
	 */
	public List<SysDzSource> loadDzDataByDsId(String dsId) throws Exception;

	public List<Map<String, Object>> getListMap(String sql);

	public List getUser(String sql);
}